Mobile devices such as smart phones are rapidly evolving and maturing as a platform that serves the computational and communication needs of people in their everyday lives. The near ubiquitous use of mobile phones and the high penetration of mobile networks into urban and rural areas have made mobile phones a suitable platform for delivering applications such as primary healthcare, agriculture support, etc. to rural populations. Additionally, a growing number of smart phones have embedded sensors which can sense the user's environment. For example, many smart phones come with built in accelerometers, GPS, light sensors, microphones, proximity sensors, cameras, compasses, and gyroscopes. There are also many sensors available that can communicate over low power RF communication and push data to phones.
These sensors allow the mobile device to determine a context based on the inputs from the sensors. Conventional proactive applications, such as location-based tracking, healthcare, remote monitoring, or environmental monitoring may use the context derived from the sensors. The conventionally derived context may be aware of external conditions through the sensors. However, conventionally derived contexts may not be cognizant of the application objectives, operating environment constraints, process requirements, and other contexts internal to the device.
In order to provide an enhanced quality of user experience, and to meet service requirements, it may be desirable for mobile applications to be aware of application contexts and process contexts, as well as tradeoffs. Such a rich context may allow the mobile device to utilize its limited resources more effectively and provide a better user experience.
Specifically, mobile devices typically have limited processing power and other resources. Despite the limited resources of mobile devices, users frequently run or attempt to run lengthy or complex applications, or a large number of applications, in the resource-constrained mobile device environment. Such high demands on the limited resources of the mobile device may cause application execution to slow or stop, which is undesirable for the user experience. This may be especially troublesome when certain applications are critical applications, because the critical applications may be similarly slowed or stopped when the limited resources of the mobile device are strained.
Accordingly, it is desirable to provide an adaptive architecture for a mobile application based on rich application, process, and resource contexts that may be deployed in a resource constrained environment. The adaptive architecture may provide for offloading certain processes based on an analysis of a rich context provided to the mobile device. The adaptive architecture may also provide for other adaptations to the mobile device or to application execution on the mobile device. The adaptations may be performed dynamically.
Accordingly, systems, methods and computer programs embodied on non-transitory computer-readable media are provided for an adaptive architecture for a mobile application based on rich application, process, and resource contexts that may be deployed in a resource-constrained environment, as disclosed herein.